# -*- coding: utf-8 -*-
# @Time : 2024-11-2024/11/30
# @File : image_utils.py

import cv2
import numpy as np
from PIL import Image, ImageDraw, ImageFont


def cv2_add_chinese_text(img, text, position, font_size=30, color=(255, 255, 255), font_path="simhei.ttf"):
    """
    在OpenCV图像上添加中文文本
    
    参数:
    - img: OpenCV格式图像
    - text: 要添加的文本
    - position: 文本位置 (x, y)
    - font_size: 字体大小
    - color: 字体颜色 (B, G, R)
    - font_path: 字体文件路径
    
    返回:
    - 添加文本后的图像
    """
    # 转换图像格式，从OpenCV的BGR到PIL的RGB
    if img.ndim == 2:  # 灰度图
        img_pil = Image.fromarray(img)
    else:  # 彩色图
        img_pil = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
        
    # 创建绘图对象
    draw = ImageDraw.Draw(img_pil)
    
    # 加载字体
    try:
        font = ImageFont.truetype(font_path, font_size)
    except IOError:
        # 如果找不到指定字体，使用默认字体
        print(f"找不到字体: {font_path}，使用默认字体")
        font = ImageFont.load_default()
    
    # 绘制文本
    draw.text(position, text, fill=color[::-1], font=font)  # PIL颜色是RGB，而OpenCV是BGR
    
    # 将PIL图像转回OpenCV格式
    if img.ndim == 2:
        return np.array(img_pil)
    else:
        return cv2.cvtColor(np.array(img_pil), cv2.COLOR_RGB2BGR)


def create_blank_image(height, width, color=(0, 0, 0)):
    """创建空白图像"""
    return np.zeros((height, width, 3), dtype=np.uint8) 